<?php

namespace Api\Openapi\Pay;


use Api\Openapi\Pay;
use Api\Openapi\Util;

class Query {

    const URI_PAY_QUERY_TRANS_RESULT = "/pay/query";  //交易结果查询(代收、代付、交易)
    /**
     * 交易状态
     */
    const TRANS_STATUS_HANDLING = 0;  //处理中
    const TRANS_STATUS_SUCC = 1;  //成功
    const TRANS_STATUS_FAIL = 2;  //失败

    /**
     * 查询代付交易结果详情
     *
     * @param string $ori_trans_id default null   用户流水号
     * @param string $trans_id default null       平台流水号
     * @param array $options
     *
     * @return array 查询成功返回:
     *               trans_time      string 交易时间
     *               serial_no       string 商户交易id
     *               trans_serial_no string 平台交易id
     *               trans_type      string 交易类型 01-代付 02-代扣
     *               amt             int    交易金额
     *               status          int    交易状态  0-处理中 1-成功 2-失败
     */
    public function queryTransResult($ori_trans_id = null, $trans_id = null, array $options = array()) {
        $body = array(
            "service" => $options["request_params"]["third_pay"],
            "ori_trans_id" => $ori_trans_id,
            "trans_id" => $trans_id,
            "options" => array(
                "mer_id" => $options["request_params"]["options"]["mer_id"],
            ),
        );
        $params = array(
            "header" => array(),
            "body" => $body,
        );

        $result = Util::request(self::URI_PAY_QUERY_TRANS_RESULT, $params)["body"];

        $status = $result["status"];
        /**
         * 针对openapi status进行转换
         */
        if (Pay::RESP_STATUS_SUCC == $status) {
            $status = self::TRANS_STATUS_SUCC;
        } else if (Pay::RESP_STATUS_HANDLING == $status) {
            $status = self::TRANS_STATUS_HANDLING;
        } else if (Pay::RESP_STATUS_FAIL == $status) {
            $status = self::TRANS_STATUS_FAIL;
        }
        $result["status"] = $status;

        return $result;
    }

} 